package com.education.service.edu.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.education.dto.CourseDto;
import com.education.service.edu.entity.Course;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.education.service.edu.entity.vo.CoursePublishVo;
import com.education.service.edu.entity.vo.CourseVo;
import com.education.service.edu.entity.vo.WebCourseVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 课程 Mapper 接口
 * </p>
 *
 * @author Lance
 * @since 2020-06-16
 */
public interface CourseMapper extends BaseMapper<Course> {

    /**
     * 根据ID获取课程发布信息
     * @param id
     * @return
     */
    CoursePublishVo selectCoursePublishVoById(String id);

    /**
     * 分页课程列表
     * @param pageParam mp会自动组装分页参数
     * @param queryWrapper mp会自动组装queryWrapper：
     * @return
     */
    List<CourseVo> selectPageByCourseQuery(Page<CourseVo> pageParam,
            // @Param(Constants.WRAPPER) 和 xml文件中的 ${ew.customSqlSegment} 对应
            @Param(Constants.WRAPPER) QueryWrapper<CourseVo> queryWrapper);

    /**
     * 查询课程和讲师信息
     * @param CourseId 课程ID
     * @return
     */
    WebCourseVo selectWebCourseById(String CourseId);

    /**
     * 根据ID更新访问数 [ 解决并发问题 ]
     * @param id
     * @return
     */
    int updateWiewCountById(String id);

    /**
     * 根据课程ID查询课程信息
     * @param courseId
     * @return
     */
    CourseDto selectCourseDtoById(String courseId);
}
